草庐IT

Android AsyncTask 内存泄漏

全部标签

c# - 如何避免内存泄漏?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我可以使用哪些技巧来避免应用程序中的内存泄漏?有没有我可以注意的问题或陷阱?

c# - 是否有一个 .Net 内存分析器可以跟踪大对象堆上的所有分配?

关闭。这个问题不满足StackOverflowguidelines.它目前不接受答案。想改善这个问题吗?更新问题,使其成为on-topic对于堆栈溢出。3年前关闭。Improvethisquestion我尝试过的大多数.NET内存分析器都允许您拍摄内存快照。但是,我正在尝试诊断一个问题,即我最终分配给.NET的大量内存被ANTS分析器指示为“空闲”。(我已经用MemProfiler和CLRProfiler等其他分析器确认了这个问题。ANTS显示我有大量内存碎片(100%的空闲内存,最大块为150MB。)堆中所有对象的总大小为180MB。我有553MB分配给.NET,152MB分配给“非

c# - EntityFramework 核心单元测试 - SQLite 内存模式与 InMemory 提供程序

我正在为使用EntityFrameworkCore并根据docs的项目编写单元测试。我可以使用SQLite内存模式或TheInMemoryprovider来近似数据库上下文。文档指出SQLite内存模式的行为类似于关系数据库,InMemory提供程序的行为并不总是像关系数据库。据我所知,SQLite模式听起来更好,因为它的行为类似于关系数据库,而InMemory提供程序则不然,但我想还有其他方面需要考虑,否则没有人会使用InMemory提供程序听起来更糟。在选择使用哪种工具之前,我应该考虑每种方法的其他优缺点吗? 最佳答案 如果您的

c# - 由于非托管内存处理的延迟导致内存不足?

我的应用程序因内存不足异常而崩溃,有时其他异常也可能是由内存不足引起的。我用这个简单的代码重现了这个问题:for(inti=0;i理论上这段代码不应该崩溃,因为位图应该被自动垃圾收集,但在32位模式下运行时它会持续崩溃。问题可以这样解决:for(inti=0;i当然,这个解决方案与您不应显式调用GC.Collect的常识相悖,但我怀疑这是一个它确实有意义的场景。任何人都可以对此提供任何知情的见解吗?有没有更好的方法来解决这个问题? 最佳答案 RenderTargetBitmap很可能有与其关联的native资源。您有足够的托管内存(

c# - 从静态对象中包含的 C# 字典中释放内存

我在使用WCFWeb服务时遇到了一些问题(一些转储、内存泄漏等),并且我运行了一个profillng工具(ANTS内存配置文件)。只是为了发现即使处理结束(我运行特定测试然后停止),第2代也有25%的内存用于Web服务。我追踪这段内存,发现我有一个充满(null,null)项目的字典对象,哈希码为-1。Web服务的工作流意味着在特定的处理过程中,项目被添加然后从字典中删除(只是简单的Add和Remove)。没什么大不了的。但似乎在删除所有项目后,字典中充满了(null,null)KeyValuePair秒。实际上有数千个,以至于它们占据了很大一部分内存并最终发生溢出,相应的强制应用程序

c# - 委托(delegate)会导致内存泄漏吗? GC.TotalMemory(true) 似乎表明如此

代码usingSystem;internalstaticclassTest{privatestaticvoidMain(){try{Console.WriteLine("{0,10}:Startpoint",GC.GetTotalMemory(true));ActionsimpleDelegate=SimpleDelegate;Console.WriteLine("{0,10}:Simpledelegatecreated",GC.GetTotalMemory(true));ActionsimpleCombinedDelegate=simpleDelegate+simpleDelegat

c# - 当有大量内存可用时出现 OutOfMemoryException

我们有一个应用程序在5个(服务器)节点(16个内核,每个128GB内存)上运行,每台机器上加载近70GB的数据。该应用程序是分布式的并为并发客户端提供服务,因此,套接字使用量很大。同样,对于多线程之间的同步,也使用了一些同步技术,主要使用System.Threading.Monitor。现在的问题是,当应用程序正在运行并且数据在这些服务器节点之间以及客户端和服务器之间传输时,即使有40+%的内存,一两台服务器机器开始接收OutOfMemoryException仍然可用。我们感觉这个异常来自非托管代码。尽管我们没有直接进行任何非托管调用,但我们已经看到OOM异常堆栈跟踪中的最后一次调用始

c# - Visual Studio,在监 window 口中查看变量的内存地址

我习惯于在监window口中使用的一个特殊功能是变量的内存地址。IIRCVisualStudio为C++做这个(我知道QtCreator/Eclipse做)。有没有一种简单的方法可以在VisualStudio中为C#程序执行此操作?任何帮助将不胜感激。谢谢,杰斯 最佳答案 放置一个调试点,启动您的应用程序,当该调试点被击中时,转到调试->Windows->内存Address文本框类型,变量名,你就能看到地址。VisualStudio2012中的快捷键显示为CTRL+ALT+M,1 关于c

c# - .Net Dictionary<int,int> 在大约 6,000,000 个条目处出现内存不足异常

我正在使用Dictionary存储图像中颜色出现的频率,其中键是颜色(作为int),值是颜色在图像中出现的次数。当我处理更大/更彩色的图像时,这本词典会变得非常大。我在大约6,000,000个条目时遇到内存不足异常。这是在32位模式下运行时的预期容量吗?如果是这样,我能做些什么吗?有哪些替代方法可以跟踪这些不会耗尽内存的数据?作为引用,下面是循环遍历位图中的像素并将频率保存在Dictionary中的代码:Bitmapb;//=something...Dictionarycount=newDictionary();System.Drawing.Colorcolor;for(inti=0;

c# - 读取大 TXT 文件,内存不足异常

我想阅读大TXT文件,大小为500MB,首先我使用varfile=newStreamReader(_filePath).ReadToEnd();varlines=file.Split(new[]{'\n'});但它抛出内存异常,然后我尝试逐行读取,但在读取大约150万行后再次抛出内存异常using(StreamReaderr=newStreamReader(_filePath)){while((line=r.ReadLine())!=null)_lines.Add(line);}或者我用过foreach(varlinFile.ReadLines(_filePath)){_lines.A